package com.sitaoke.stocks.controller;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.sitaoke.stocks.common.BaseController;
import com.sitaoke.stocks.common.EncryptionUtil;
import com.sitaoke.stocks.common.HttpClientUtil;
import com.sitaoke.stocks.pojo.Stock;
import com.sitaoke.stocks.service.StockService;
import com.sitaoke.stocks.vo.CalcStock;
import com.sitaoke.stocks.vo.EUIGrid;
import com.sitaoke.stocks.vo.EUIPager;
import com.sitaoke.stocks.vo.JsonMsg;
import com.sitaoke.stocks.vo.NetStockInfo;

@Controller
@RequestMapping("/stock")
public class StockController extends BaseController{
	
	@Autowired
	private StockService stockService;
	
	/**
	 * 
	 * 保存
	 * @author: wyc
	 * @createTime: 2019年5月29日 下午7:12:08
	 * @history:
	 * @param stock
	 * @return Object
	 */
	@RequestMapping("/save")
	@ResponseBody
	public Object save(Stock stock){
		Stock savedStock =stockService.save(stock);
		return new JsonMsg(true,savedStock);
	}
	
	
	/**
	 * 
	 * 删除
	 * @author: wyc
	 * @createTime: 2019年5月29日 下午7:12:08
	 * @history:
	 * @param stock
	 * @return Object
	 */
	@RequestMapping("/delete")
	@ResponseBody
	public Object delete(String id){
		stockService.delete(id);
		return new JsonMsg(true,"删除成功");
	}
	
	
	/**
	 * 
	 * 分页列表
	 * @author: wyc
	 * @createTime: 2019年5月29日 下午7:11:57
	 * @history:
	 * @param request
	 * @return EUIGrid
	 */
	@RequestMapping("/getPagerList")
	@ResponseBody
	public EUIGrid getPagerList(HttpServletRequest request){
		EUIPager ePager=getPager(request);
		Map<String,Object> param=getParamMap(request);
		return stockService.getPagerList(ePager,param);
		
	}
	
	
	/**
	 * 
	 * 列表
	 * @author: wyc
	 * @createTime: 2019年5月30日 下午2:35:49
	 * @history:
	 * @param request
	 * @return List<Stock>
	 */
	@RequestMapping("/list")
	@ResponseBody
	public Object list(HttpServletRequest request){
		List<Stock> list=stockService.getList();
		List<CalcStock> calcList=new ArrayList<CalcStock>();
		for (Stock stock : list) {
			calcList.add(stockService.doCalc(stock,false));
		}
		System.out.println("=========="+new DateTime(new Date()).toString("yyyy-MM-dd HH:mm:ss")+"==========");
		for (CalcStock calcStock : calcList) {
			System.out.println(calcStock.getName()+"/"+calcStock.getCurrentPrice()+"/"+calcStock.getDaySumFl()+"/"+(calcStock.getDayFlPercent()+"%")+"/"+calcStock.getMiniPrice()+"(min)/"+calcStock.getMaxiPrice()+"(max)");
		}
		
		return calcList;
	}
	
	
	/**
	 * 
	 * 根据Id获取信息
	 * @author: wyc
	 * @createTime: 2019年6月4日 下午2:11:09
	 * @history:
	 * @param code
	 * @return Object
	 */
	@RequestMapping("/getStockInfoById")
	@ResponseBody
	public Object getStockInfoById(String id){
		Stock stock=stockService.getStockById(id);
		return stockService.doCalc(stock,true);
	}
	
	
	/**
	 * 
	 * 获取5日线
	 * @author: wyc
	 * @createTime: 2019年5月30日 下午2:35:49
	 * @history:
	 * @param request
	 * @return List<Stock>
	 */
	@RequestMapping("/getFiveDayList")
	@ResponseBody
	public Object getFiveDayList(String code){
		return stockService.getFiveDayList(code);
	}
	
	
	/**
	 * 
	 * 获取当前价格
	 * @author: wyc
	 * @createTime: 2019年5月30日 下午2:35:49
	 * @history:
	 * @param request
	 * @return List<Stock>
	 */
	@RequestMapping("/getCurrentPrice")
	@ResponseBody
	public Object getCurrentPrice(String code){
		return stockService.getCurrentPrice(code);
	}
	
	
	/**
	 * 
	 * 获取当前的5日线
	 * @author: wyc
	 * @createTime: 2019年6月1日 下午10:22:36
	 * @history:
	 * @param code
	 * @return Object
	 */
	@RequestMapping("/getCurrentFivePrice")
	@ResponseBody
	public Object getCurrentFivePrice(String code){
		//return stockService.getCurrentFivePrice(code);
		return stockService.getFiveLine(code);
	}
	
	
	/**
	 * 
	 * 获取明日5日线
	 * @author: wyc
	 * @createTime: 2019年6月1日 下午10:22:36
	 * @history:
	 * @param code
	 * @return Object
	 */
	@RequestMapping("/getTomrrowFivePrice")
	@ResponseBody
	public Object getTomrrowFivePrice(String code){
		//return stockService.getTomrrowFivePrice(code);
		return stockService.getTomrrowFiveLine(code);
	}
	
	/**
	 * 
	 * 获取最近5天的收盘时间
	 * @author: wyc
	 * @createTime: 2019年6月1日 下午10:36:23
	 * @history:
	 * @return Object
	 */
	@RequestMapping("/getFiveDayCloseTime")
	@ResponseBody
	public Object getFiveDayCloseTime(){
		return stockService.getFiveDayCloseTime();
	}
	
	
	/**
	 * 
	 * 获取需要计算的3天收盘时间(除头去尾)-用于计算明天的5日线
	 * @author: wyc
	 * @createTime: 2019年6月1日 下午10:36:23
	 * @history:
	 * @return Object
	 */
	@RequestMapping("/getCalThreeDayCloseTime")
	@ResponseBody
	public Object getCalThreeDayCloseTime(){
		return stockService.getCalThreeDayCloseTime();
	}
	
	/**
	 * 
	 * 获取需要计算的4天收盘时间(去尾)-用于计算今天实时的5日线
	 * @author: wyc
	 * @createTime: 2019年6月1日 下午10:36:23
	 * @history:
	 * @return Object
	 */
	@RequestMapping("/getCalFourDayCloseTime")
	@ResponseBody
	public Object getCalFourDayCloseTime(){
		return stockService.getCalFourDayCloseTime();
	}
	
	
	/**
	 * 
	 * 根据code调用网络接口获取信息
	 * @author: wyc
	 * @createTime: 2019年6月5日 下午4:45:39
	 * @history:
	 * @param code
	 * @return NetStockInfo
	 */
	@RequestMapping("/getStockInfoFromWsByCode")
	@ResponseBody
	public NetStockInfo getStockInfoFromWsByCode(String code){
		return stockService.getStockInfoFromWsByCode(code);
	}
	
	
}
